# -*- coding: utf-8 -*-

from djtools.utils import rtr, httprr
from servico.models import ServicoInterno, MaterialServico, EquipeExecutante,\
    ServicoStatus, Equipe
from servico.forms import MaterialServicoForm, EquipeExecutanteForm
from servico.relatorio import RelatorioServicoInternoForm, ServicoInternoView
from djtools import db
from comum.models import Setor, Estacao

@rtr('servico/templates/form_servico_detalhe.html')
def servico_detalhe(request, servico_id):
    servico = ServicoInterno.objects.get(id=servico_id)
    return locals()

# MATERIALSERVICO #

@rtr('servico/templates/form_editar_material.html')
def adicionar_material(request, servico_id):

    servico = ServicoInterno.objects.get(id=servico_id)
    if request.POST:
        form = MaterialServicoForm(request.POST, servico_id=servico_id)
        if form.is_valid():
            form.save()
            urls = '/servico/servico_detalhe/%s' % servico.id
            return httprr(urls, 'Material cadastrado com sucesso.')
    else:
        form = MaterialServicoForm(servico_id=servico_id)
    form.TITLE = 'Adicionar Material'
    return locals()

@rtr('servico/templates/form_editar_material.html')
def editar_material(request, material_id):
    material = MaterialServico.objects.get(id=material_id)
    servico = material.servico
    if request.POST:
        form = MaterialServicoForm(request.POST, servico_id=servico.id, instance=material)
        if form.is_valid():
            form.save()
            urls = '/servico/servico_detalhe/%s' % servico.id
            return httprr(urls, 'Material modificado com sucesso.')
    else:
        form = MaterialServicoForm(servico_id=servico.id, instance=material)
    form.TITLE = 'Modificar Material'
    return locals()

# EQUIPEEXECUTANTE #

@rtr('servico/templates/form_editar_equipe.html')
def adicionar_equipe(request, servico_id):
    servico = ServicoInterno.objects.get(id=servico_id)
    if request.POST:
        form = EquipeExecutanteForm(request.POST, servico_id=servico_id)
        if form.is_valid():
            form.save()
            urls = '/servico/servico_detalhe/%s' % servico.id
            return httprr(urls, 'Membro da Equipe cadastrado com sucesso.')
    else:
        form = EquipeExecutanteForm(servico_id=servico_id)
    form.TITLE = 'Adicionar Membro da Equipe'
    return locals()

@rtr('servico/templates/form_editar_equipe.html')
def editar_equipe(request, equipe_id):
    equipe = EquipeExecutante.objects.get(id=equipe_id)
    servico = equipe.servico
    if request.POST:
        form = EquipeExecutanteForm(request.POST, servico_id=servico.id, instance=equipe)
        if form.is_valid():
            form.save()
            urls = '/servico/servico_detalhe/%s' % servico.id
            return httprr(urls, 'Membro da Equipe modificado com sucesso.')
    else:
        form = EquipeExecutanteForm(servico_id=servico.id, instance=equipe)
    form.TITLE = 'Modificar Membro da Equipe'
    return locals()

# RELATORIOS #

@rtr()
def relatorio_servicos(request):
    form = RelatorioServicoInternoForm(request.GET or None)
    if form.is_valid():
        
        data_inicial = form.cleaned_data['data_inicial']
        data_final = form.cleaned_data['data_final']
        status = form.cleaned_data['status']
        setor = form.cleaned_data['setor']
        numero = form.cleaned_data['numero']
        equipe = form.cleaned_data['equipe']
        estacao = form.cleaned_data['estacao']
        agrupamento = form.cleaned_data['agrupamento']
        
        servicos = ServicoInterno.objects.all()
        
        if data_inicial:
            servicos = servicos.filter(data_emissao__gte=data_inicial)
        if data_final:
            servicos = servicos.filter(data_emissao__lte=data_final)
        if status:
            servicos = servicos.filter(status=status)
        if setor:
            servicos = servicos.filter(setor=setor)
        if numero:
            servicos = servicos.filter(numero__icontains=numero)
        if equipe:
            servicos = servicos.filter(equipe=equipe)
        if estacao:
            servicos = servicos.filter(estacao=estacao)
        if agrupamento:
            dic = dict()
            if agrupamento == 'status':
                for s in ServicoStatus.objects.all():
                    dic.update({s.nome:servicos.filter(status=s).count()})
            if agrupamento == 'setor':
                for s in Setor.objects.all():
                    dic.update({s.sigla:servicos.filter(setor=s).count()})
            if agrupamento == 'equipe':
                for s in Equipe.objects.all():
                    dic.update({s.nome:servicos.filter(equipe=s).count()})
            if agrupamento == 'estacao':
                for s in Estacao.objects.all():
                    dic.update({s.nome:servicos.filter(estacao=s).count()})
        
        if request.GET.has_key('pdf'):
            return ServicoInternoView(request, servicos)
            
    return locals()